#ifndef PARTICIPANT_H_
#define PARTICIPANT_H_

#include "core.hpp"
#include "logger.h"
#include "network.h"
#include "parser.h"
#include "kv.h"

class Participant
{
private:

    // the local txid
    txid                _TXID;

    // network
    Network             _net;

    // the log
    Logger              _lg;

    // kv
    KV                  _kvdb;

    // helper
    Parser              _parser;

private:
    int keepAlive();
    int Working();

    std::string pWorker(std::string task);
    std::string eventParser(std::string event);

public:
    Participant() {};
    ~Participant(){};
    void Init(NodeInfo info);
    int Launch();
};


#endif








// // --------------------------------
// #ifndef PARTICIPANT_H_INCLUDE
// #define PARTICIPANT_H_INCLUDE
// #include <iostream>
// #include "kvstore2pcsystem.h"
// #include <string>
// #include <map>
// using namespace std;

// class participant {
// private:
//     /**************** 完成participant头文件，配置participant功能、参数 ****************/
//     // begin
//     Info coordinator_info;  //存放coordinator的ip+端口号
//     Info participant_info;  //存放participant集的ip+端口号
//     map<string, string> memory;  //存放key-value, 使用内存空间存储，无需放入磁盘

//     void init();

// public:
//     //构造函数，从配置文件中读取内容并初始化相应变量
//     participant(char *conf);
//     void start();
//     ~participant();

//     // end
// };


// #endif